/**
 * 工作流相关类型定义
 */

/**
 * 待办任务分页请求
 */
export interface TaskPageRequest {
  /** 当前页码 */
  currentPage?: number
  /** 每页大小 */
  numPerPage?: number
  /** 业务名称 */
  name?: string
  /** 创建时间 */
  createTime?: [string, string]
}

/**
 * 启动用户信息
 */
export interface StartUser {
  /** 用户ID */
  id?: string
  /** 用户昵称 */
  nickname?: string
  /** 部门ID */
  deptId?: number
  /** 部门名称 */
  deptName?: string | null
}

/**
 * 流程实例信息
 */
export interface ProcessInstanceInfo {
  /** 流程实例ID */
  id?: string
  /** 流程实例名称 */
  name?: string
  /** 业务键 */
  businessKey?: string
  /** 流程定义ID */
  processDefinitionId?: string
  /** 流程定义名称 */
  processDefinitionName?: string
  /** 开始时间 */
  startTime?: string
  /** 结束时间 */
  endTime?: string | null
  /** 状态 */
  status?: string | number
  /** 启动用户 */
  startUser?: StartUser
  /** 变量列表 */
  varList?: any | null
}

/**
 * 业务属性信息
 */
export interface BusinessAttribute {
  /** 客户名称 */
  customerName?: string
  /** 组织名称 */
  orgName?: string
  /** 业务类型 */
  businessType?: string
  /** 业务编号 */
  businessNum?: string
  /** 部门名称 */
  departName?: string
  /** 业务名称 */
  businessName?: string
  /** 业务时间 */
  businessTime?: string
  /** 负责人 */
  superMan?: string
}

/**
 * 待办任务分页响应
 */
export interface TaskPageResponse {
  /** 任务列表 */
  list?: TaskItem[]
  /** 总记录数 */
  total?: number
}

/**
 * 已完成任务分页响应
 */
export interface CompletedTaskPageResponse {
  /** 任务列表 */
  list?: CompletedTaskItem[]
  /** 总记录数 */
  total?: number
}

/**
 * 任务项信息
 */
export interface TaskItem {
  /** 流程实例ID */
  processInstanceId?: string
  /** 任务名称 */
  taskName?: string
  /** 节点名称 */
  nodeName?: string
  /** 创建时间 */
  createTime?: string
  /** 用户昵称 */
  nickname?: string
  /** 客户名称 */
  customerName?: string
  /** 组织名称 */
  orgName?: string
  /** 业务类型 */
  businessType?: string
  /** 业务ID */
  businessId?: string
  /** 业务编号 */
  businessNum?: string
  /** 部门名称 */
  departName?: string
  /** 业务名称 */
  businessName?: string
  /** 业务时间 */
  businessTime?: string
  /** 金额 */
  amount?: string
  /** 负责人 */
  superMan?: string
  /** 详情路径 */
  path?: string
  taskId?: string
}

/**
 * 已审核任务项信息
 */
export interface CompletedTaskItem extends TaskItem {
  /** 操作原因 */
  reason?: string
  /** 结束时间 */
  endTime?: string
  date?: string
  /** 持续时间（毫秒） */
  durationInMillis?: number
  /** 状态码 */
  status?: number | string
  /** 状态描述 */
  statusDesc?: string
}

/**
 * 待办查询请求
 */
export interface TodoQueryRequest {
  /** 查询类型 */
  type?: string
  /** 数量 */
  num?: number
}

/**
 * 待办查询响应
 */
export interface TodoQueryResponse {
  /** 待办总数 */
  total?: number
  /** 待办列表 */
  records?: TodoItem[]
}

/**
 * 待办项
 */
export interface TodoItem {
  /** 待办ID */
  id?: string
  /** 业务ID */
  businessId?: string
  /** 业务类型 */
  businessType?: string
  /** 标题 */
  title?: string
  /** 内容 */
  content?: string
  /** 时间 */
  createTime?: string
  /** 操作人 */
  createBy?: string
  /** 模块 */
  module?: string
  /** 状态 */
  status?: string
}

/**
 * 流程任务
 */
export interface ProcessTask {
  /** 任务ID */
  id?: string
  /** 任务名称 */
  name?: string
  /** 流程实例ID */
  processInstanceId?: string
  /** 业务键 */
  businessKey?: string
  /** 任务定义ID */
  taskDefinitionId?: string
  /** 任务定义名称 */
  taskDefinitionName?: string
  /** 任务定义Key */
  taskDefinitionKey?: string
  /** 负责人 */
  assignee?: string
  /** 候选人 */
  candidates?: string
  /** 创建时间 */
  createTime?: string
  /** 完成时间 */
  endTime?: string
  /** 状态 */
  status?: string
  /** 优先级 */
  priority?: number
}

/**
 * 流程实例
 */
export interface ProcessInstance {
  /** 流程实例ID */
  id?: string
  /** 流程实例名称 */
  name?: string
  /** 类别 */
  category?: string | null
  /** 类别名称 */
  categoryName?: string | null
  /** 状态 */
  status?: number
  /** 开始时间 */
  startTime?: string
  /** 结束时间 */
  endTime?: string | null
  /** 持续时间（毫秒） */
  durationInMillis?: number | null
  /** 表单变量 */
  formVariables?: Record<string, any>
  /** 业务键 */
  businessKey?: string
  /** 启动用户 */
  startUser?: StartUser
  /** 流程定义ID */
  processDefinitionId?: string
  /** 流程定义 */
  processDefinition?: ProcessDefinition
  /** 任务列表 */
  tasks?: any | null
}

/**
 * 业务日志
 */
export interface BusinessLog {
  /** 日志ID */
  id?: string
  /** 活动编码 */
  activitCode?: string
  /** 业务ID */
  businessId?: string
  /** 操作人 */
  createBy?: string
  /** 操作人名称 */
  createByName?: string
  /** 操作时间 */
  createTime?: string
  /** 操作内容 */
  content?: string
  /** 备注 */
  remark?: string
  /** IP地址 */
  ip?: string
}

/**
 * 业务流程阶段节点
 */
export interface BusinessStageNode {
  /** 节点ID */
  id?: string
  /** 业务类型 */
  businessType?: string
  /** 阶段编码 */
  stageCode?: string
  /** 阶段名称 */
  stageName?: string
  /** 节点编码 */
  nodeCode?: string
  /** 节点名称 */
  nodeName?: string
  /** 节点类型 */
  nodeType?: string
  /** 排序 */
  sort?: number
  /** 状态 */
  status?: string
  /** 图标 */
  icon?: string
}

/**
 * 流程定义
 */
export interface ProcessDefinition {
  /** 流程定义ID */
  id?: string
  /** 流程定义版本 */
  version?: number
  /** 流程定义名称 */
  name?: string
  /** 流程定义Key */
  key?: string
  /** 图标 */
  icon?: string | null
  /** 描述 */
  description?: string
  /** 类别 */
  category?: string
  /** 类别名称 */
  categoryName?: string | null
  /** 表单类型 */
  formType?: number
  /** 表单ID */
  formId?: string
  /** 表单名称 */
  formName?: string | null
  /** 表单配置 */
  formConf?: string | null
  /** 表单字段 */
  formFields?: string | null
  /** 表单自定义创建路径 */
  formCustomCreatePath?: string | null
  /** 表单自定义查看路径 */
  formCustomViewPath?: string | null
  /** 表单自定义编辑路径 */
  formCustomEditPath?: string | null
  /** 挂起状态 */
  suspensionState?: number
  /** 部署时间 */
  deploymentTime?: string | null
  /** BPMN XML */
  bpmnXml?: string
  /** 启动用户选择任务 */
  startUserSelectTasks?: string | null
}

/**
 * 审批操作响应
 */
export interface ApprovalResponse {
  /** 是否成功 */
  success?: boolean
  /** 消息 */
  message?: string
  /** 数据 */
  data?: any
}

/**
 * 审批同意请求参数
 */
export interface ApproveRequest {
  /** 任务ID */
  id: string
  /** 审批意见 */
  reason?: string
  /** 表单数据 */
  copyUserIds?: string[]
}

/**
 * 审批拒绝请求参数
 */
export interface RejectRequest {
  /** 任务ID */
  id: string
  /** 审批意见 */
  reason?: string
  /** 表单数据 */
  copyUserIds?: string[]
}

/**
 * 审批委派请求参数
 */
export interface DelegateRequest {
  /** 任务ID */
  id: string
  /** 审批意见 */
  reason?: string
  /** 表单数据 */
  delegateUserId?: string[]
}

/**
 * 审批转派请求参数
 */
export interface TransferRequest {
  /** 任务ID */
  id: string
  /** 转派人员Id */
  assigneeUserId: string
  /** 转派说明 */
  reason?: string
}

/**
 * 审批加签请求参数
 */
export interface AddSignRequest {
  /** 任务ID */
  id: string
  /** 加签人员列表 */
  userIds?: string[]
  /** 加签说明 */
  reason?: string
  /** 加签类型：after-后加签, before-前加签, parallel-会签, serial-或签 */
  type?: 'after' | 'before' | 'parallel' | 'serial'
}

/**
 * 抄送列表请求参数
 */
export interface CopyPageRequest {
  /** 当前页码 */
  currentPage?: number
  /** 每页大小 */
  numPerPage?: number
  /** 流程实例ID */
  processInstanceId?: string
  /** 流程实例名称 */
  processInstanceName?: string
  /** 创建时间范围 */
  createTime?: [string, string]
}

/**
 * 抄送数据信息
 */
export interface CopiedItemData {
  /** ID */
  id: string
  /** 发起用户ID */
  startUserId: string
  /** 发起用户名称 */
  startUserName: string
  /** 流程实例ID */
  processInstanceId: string
  /** 流程实例名称 */
  processInstanceName: string
  /** 流程实例开始时间 */
  processInstanceStartTime: string
  /** 活动ID */
  activityId: string
  /** 任务ID */
  taskId: string
  /** 任务名称 */
  taskName: string
  /** 创建人ID */
  createBy: string
  /** 创建人名称 */
  creatorName: string
  /** 创建时间 */
  createTime: string
}

/**
 * 抄送列表响应参数
 */
export interface CopyPageResponse {
  /** 列表数据 */
  list?: CopiedItemData[]
  /** 总记录数 */
  total?: number
}

/**
 * 我发起的列表请求参数
 */
export interface MyProcessPageRequest {
  /** 当前页码 */
  currentPage?: number
  /** 每页大小 */
  numPerPage?: number
  /** 流程实例名称 */
  name?: string
  /** 创建时间范围 */
  createTime?: [string, string]
}

/**
 * 我发起的列表项数据
 */
export interface MyProcessItem {
  /** 流程实例ID */
  processInstanceId?: string
  /** 任务名称 */
  taskName?: string
  /** 节点名称 */
  nodeName?: string | null
  /** 类别名称 */
  categoryName?: string
  /** 创建时间 */
  createTime?: string
  /** 客户名称 */
  customerName?: string
  /** 组织名称 */
  orgName?: string
  /** 业务类型 */
  businessType?: string
  /** 业务ID */
  businessId?: string
  /** 业务编号 */
  businessNum?: string
  /** 部门名称 */
  departName?: string
  /** 业务名称 */
  businessName?: string
  /** 业务时间 */
  businessTime?: string
  /** 金额 */
  amount?: string
  /** 状态码 */
  status?: number | string
  /** 状态描述 */
  statusDesc?: string
}

/**
 * 我发起的列表响应参数
 */
export interface MyProcessPageResponse {
  /** 列表数据 */
  list?: MyProcessItem[]
  /** 总记录数 */
  total?: number
}

/**
 * 流程历史记录项
 */
export interface ProcessHistoryItem {
  /** 执行ID */
  id?: string
  /** 活动ID */
  activityId?: string
  /** 活动名称 */
  activityName?: string
  /** 执行开始时间 */
  startTime?: string
  /** 执行结束时间 */
  endTime?: string
  /** 持续时间（毫秒） */
  duration?: number
  /** 执行类型 */
  type?: string
  /** 办理人 */
  assignee?: string
  /** 办理人名称 */
  assigneeName?: string
  /** 审批意见 */
  comment?: string
  /** 节点类型 */
  nodeType?: string
}

/**
 * 流程历史列表
 */
export interface ProcessHistoryList {
  /** 流程历史记录 */
  list?: ProcessHistoryItem[]
  /** 总记录数 */
  total?: number
}

/**
 * 用户信息
 */
export interface UserInfo {
  /** 用户ID */
  id?: string
  /** 用户昵称 */
  nickname?: string
  /** 部门ID */
  deptId?: number
  /** 部门名称 */
  deptName?: string
}

/**
 * 流程实例详细信息
 */
export interface ProcessInstanceDetail {
  /** 流程实例ID */
  id?: string
  /** 流程实例名称 */
  name?: string
  /** 创建时间 */
  createTime?: string | null
  /** 流程定义ID */
  processDefinitionId?: string
  /** 启动用户 */
  startUser?: UserInfo
  /** 变量列表 */
  varList?: any | null
}

/**
 * 审批任务信息
 */
export interface ApprovalTask {
  /** 任务ID */
  id?: string
  /** 任务名称 */
  name?: string
  /** 创建时间 */
  createTime?: string
  /** 结束时间 */
  endTime?: string | null
  /** 持续时间（毫秒） */
  durationInMillis?: number | null
  /** 状态 */
  status?: number
  /** 审批意见 */
  reason?: string | null
  /** 委派原因 */
  delegateReason?: string | null
  /** 执行ID */
  executionId?: string
  /** 拥有者用户 */
  ownerUser?: any | null
  /** 办理人用户 */
  assigneeUser?: UserInfo
  /** 任务定义Key */
  taskDefinitionKey?: string
  /** 流程实例ID */
  processInstanceId?: string
  /** 流程实例信息 */
  processInstance?: ProcessInstanceDetail
  /** 业务属性 */
  businessAttribute?: any | null
  /** 父任务ID */
  parentTaskId?: any | null
  /** 子任务 */
  children?: any | null
  /** 表单ID */
  formId?: any | null
  /** 表单名称 */
  formName?: any | null
  /** 表单配置 */
  formConf?: any | null
  /** 表单字段 */
  formFields?: any | null
  /** 表单变量 */
  formVariables?: any | null
  /** 字段权限 */
  fieldsPermission?: any | null
  /** 按钮设置 */
  buttonsSetting?: any | null
}

/**
 * 审批信息列表响应
 */
export type ApprovalTaskListResponse = ApprovalTask[]
